package jgl.vajra.kingkong.part.mine.contract;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import jgl.vajra.kingkong.bean.AlipayAccountBean;
import jgl.vajra.kingkong.bean.BindAccountBean;
import jgl.vajra.kingkong.databinding.ActivityWithdrawalPageBinding;
import jgl.vajra.kingkong.widget.mvvm.model.BaseModel;
import jgl.vajra.kingkong.widget.mvvm.view.BaseMVVMView;
import jgl.vajra.kingkong.widget.mvvm.viewmodel.BaseViewModel;

public class WithdrawalPageContract {
    public abstract static class Model extends BaseModel {
        public abstract Observable<List<BindAccountBean>> getBindAccountData(Map<String, Object> map);

        public abstract Observable<String> getAlipayAuthData(Map<String, Object> map);

        public abstract Observable<AlipayAccountBean> getAlipayAccountData(Map<String, Object> map);

        public abstract Observable<String> bindBankCardData(Map<String, Object> map);

        public abstract Observable<String> incomeWithdrawData(Map<String, Object> map);
    }

    public interface View extends BaseMVVMView {
        void onEditNow();

        void onBindNow(String accountNumberYhk);

        void unboundWx();

        void onBindWx();

        void onBindZfb();

        void onChoiceYhk(int type, String accountNumber);

        void onChoiceWx(int type, String accountNumber);

        void onChoiceZfb(int type, String accountNumber);

        void unboundZfb();

        void onDetermine();

        void returnBindAccountData(List<BindAccountBean> data);

        void returnAlipayAuthData(String alipayAuth);

        void returnAlipayAccountData(AlipayAccountBean data);

        void returnBindBankCardData();

        void returnIncomeWithdrawData();
    }

    public abstract static class ViewModel extends BaseViewModel<View, ActivityWithdrawalPageBinding, Model> {

        public abstract void getBindAccountData(Map<String, Object> map);

        public abstract void getAlipayAuthData(Map<String, Object> map);

        public abstract void getAlipayAccountData(Map<String, Object> map);

        public abstract void bindBankCardData(Map<String, Object> map);

        public abstract void incomeWithdrawData(Map<String, Object> map);
    }
}


